kakashi-blog・カカシブログ・

Python備忘録を書きドローンやバイクなど好きな事で生きて行こうとしているブログ

Python

Python Tkinter入門|ウインドウ・ラベル・入力欄・ボタンの基本

投稿日:2019年12月4日 更新日:

PythonのTkinter(ティーケーインター)を使うと、ボタンや入力欄のある画面(GUI)を作れます。この記事では、ウインドウを開いて、ラベル、テキストの入力欄、ボタンを付けるまでの基本をまとめます。

最後に、名前を入力してボタンを押すと「こんにちは〇〇さん」と表示する プログラムを作ります。

要点

  • tk.Tk() でウインドウを作り、最後に mainloop() を呼ぶと表示されます
  • 文字を表示するのは Label、入力欄は Entry、ボタンは Button です
  • ボタンを押したときに動かす関数は、command=関数名 で指定します
  • 関数は、ボタンを作る行より前に書いておく必要があります

ウインドウとラベルを作る

Tkinterは tk という短い名前で読み込んでおくと書きやすくなります。ウインドウは、ルートウインドウを作って mainloop() を呼ぶだけで表示できます。

import tkinter as tk

root = tk.Tk()
root.title("はじめてのTkinter")
root.geometry("400x300")  # 幅x高さ(ピクセル)

label = tk.Label(root, text="こんにちは", bg="lightblue",
                 relief="ridge", bd=3, width=20, height=2)
label.pack()

root.mainloop()

pack() は、作った部品をウインドウに並べるための命令です。これを忘れると、部品が表示されません。

Tkinterでラベルを表示したウインドウ

ラベルの見た目を変える

ラベルは、bg(背景色)、bd(枠の太さ)、relief(枠の形)、width と height(大きさ)で見た目を変えられます。

  • 色は “red” のような名前でも、”#ff0000″ のような16進数でも指定できます
  • relief には flat、raised、sunken、groove、ridge などがあります

いろいろ変えて試してみると、好みの見た目が見つかります。

色と枠を変えたTkinterのラベル

テキストの入力欄を作る

ここからは、名前を入力するプログラムを作っていきます。まず、タイトル付きのウインドウとラベルを作ります。

win = tk.Tk()
win.title('text input & button')
win.geometry('300x100')

L1 = tk.Label(win, text='name input!')
L1.pack()

次に、文字を入力する箱(入力欄)を作ります。

E1 = tk.Entry(win, bd=10)
E1.pack()
Tkinterで作ったテキストの入力欄

bd=10 の部分は、ラベルと同じように、数字を変えると見た目を調整できます。

ボタンを作る

button = tk.Button(win, text='push↓!!', command=print_)
button.pack()

tk.Button() で押しボタンができます。カッコの中の意味は次のとおりです。

  • win:どのウインドウに入れるか
  • text='push↓!!':ボタンに表示する文字
  • command=print_:ボタンを押したら何をするか。ここでは print_ という関数を動かします

ボタンも、ラベルと同じように色や形を変えられます。

ボタンを押したときの関数を作る

command=print_ としたので、print_ という関数を作ります(print ではないので注意してください)。

def print_():
    E2 = E1.get()
    print('こんにちは{}さん'.format(E2))

E1.get() で入力欄に入っている文字を取り出してE2に入れ、print で「こんにちは(入力した文字)さん」と表示します。

関数はボタンより前に書く

Pythonは上から順に実行されるので、command=print_ の行より後に関数を書くと、「print_ がない」というエラーになります。関数は、ボタンを作る行より前に書いておいてください。

完成したコード

import tkinter as tk

win = tk.Tk()
win.title('text input & button')
win.geometry('300x100')

L1 = tk.Label(win, text='name input!')
L1.pack()

E1 = tk.Entry(win, bd=10)
E1.pack()

def print_():
    E2 = E1.get()
    print('こんにちは{}さん'.format(E2))

button = tk.Button(win, text='push↓!!', command=print_)
button.pack()

win.mainloop()

最後は必ず win.mainloop() で終わります。

動かしてみる

入力欄に名前を入れて「push↓!!」ボタンを押すと、こんな感じになります。

名前を入力してボタンを押すと「こんにちは〇〇さん」と表示された結果

まとめ

  • tk.Tk() でウインドウを作り、mainloop() で表示します
  • 部品は Label(文字)、Entry(入力欄)、Button(ボタン)で作り、pack() で並べます
  • ボタンを押したときの関数は command=関数名 で指定し、ボタンより前に書きます
  • 入力欄の文字は get() で取り出せます

Tkinterで作ったアプリは、計算カードアプリの記事にまとめています。メッセージボックスで困ったときは、Tkinterのメッセージボックスで出る謎ウインドウの消し方を見てください。


独学プログラマー Python言語の基本から仕事のやり方まで

-Python
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

関連記事

カプレカ数をPythonで求める|20桁まで一気に計算

6174や495のような「カプレカ数」を、Pythonで求めてみました。 結論から言うと、1つずつ数字を調べる方法では、5分回しても6個目が出てきませんでした。ところが、数字の並べ方(組み合わせ)で調 …

Amazonのスクレイピングは禁止?Seleniumで試した結果と正しい方法

PythonでAmazonの商品名・価格・ASINコードを集めようとして、普通のスクレイピングでは取れず、何時間も悩んだことがあります。 結論から言うと、Amazonは利用規約でロボットなどによる自動 …

PythonでExcelを操作する方法|openpyxlの基本

Pythonの勉強で覚えた、Excelを操作する方法をまとめました。初心者向けの備忘録です。 結論から言うと、openpyxlで load_workbook() で開き、wb[‘シート名’] でシート …

計算カードをPythonで自作|子供のズル対策アプリ(Tkinter)

うちの小学1年生の子の宿題に「計算カード」があります。学校からは「時間を計ってやりなさい」と言われているようです。 ところが、もちろん計算なんかせず、どれだけ早くめくれるかが目的になってしまっていまし …

Seleniumで自動ログインする方法|Python備忘録

前回はSeleniumでブラウザをスクロールさせました。今回は、ログイン画面にIDとパスワードを自動で入力して、ログインするところまでやってみます。 結論から言うと、開発者ツール(F12)で入力欄とボ …